iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0

我們在Day5 . 資料與架構層次介紹到,在CASSANDRA/SCYLLA的最外層的層次是cluster,要討論node與node之間的關係,我們以cluster的為單位來看。

cluster,可以想像為一個由一堆的node所組成環狀結構

新的一筆資料進來,或者查詢某筆資料,要從這個環(N個node)裡面找到正確的位置,就要借助partitioner

Paritioner

其實就是一個hash function,負責判斷資料是存放在哪一個節點上。

根據每一筆資料的partition key,丟進這個hash function後,得到一個ring token,藉由此token就可以得知資料所在的node位置。

CASSANDRA/SCYLLA預設只用Murmurhash3作為paritioner。

其他的partitioner還有以下兩種

  • RandomPartitioner
  • ByteOrderedPartitioner

由於partition key是存在於/等於primary key,所以為什麼primary key在CASSANDRA/SCYLLA這個重要。

在RDBMS,table可以不設primary key是完全沒關係的,在這裡不行,就連查詢資料,也都必須要有primary key條件才可以做查詢。

Replication策略

SimpleStrategy

在前面我們在練習建立keyspace,是使用這個複製策略。

SimpleStrategy適用於單一 Data Center。

NetworkTopologyStrategy

多個Data Center適用,可以針對不同的Data Center設定不同的複製因子(RF)數量。

Replication factor

在Replication策略底下,又需要指定複製因子。

資料的複製因子(RF)在建立keyspace時做設定。

假設我們cluster總共有10個node,RF=2 亦即要在這10個node裡面,指定2個node放這個keyspace的資料(原本的一份,又複製備份一份)。

Vnode

node 是一個物理單位的節點,因為在設計上,是希望一個token對應到一個node。

但是需求上,這個設計不能滿足實際的使用方式。

由於資料會根據複製因子,建立多份副本,我們還要考慮資料復原的情況。

假設總數只有6個node,複製因子(RF)=3,那麼當其中一個節點掛了,那麼其他另外兩個資料完整的node,必須從它們身上,把資料複製到一個新節點。

換句話說,一個節點掛了,又有兩個節點在做復原作業,等於有一半的node因為這種狀況全部無法服務。

考慮這種情形,其實可以用的節點越多越好,節點越多,可以處理的彈性越大。

而結構層次的設計,大量擴充node,是一個很不方便的事情,所以vnode就出現了。

vnode 亦即為虛擬節點,一個node上面可以有許多的vnode。

預設上,每個環形結構預設就有256個vnode。



上一篇
Day18. snitch
下一篇
Day 20. Quorum
系列文
scylla 從零開始攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言